package gui.gestion.forms;

import java.awt.Dimension;
import java.awt.GridLayout;

import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;

import logica.Controlador;
import objetosNegocio.Almacen;
import objetosNegocio.ListaAlmacenes;
import objetosNegocio.TipoUsuario;
import objetosNegocio.Usuario;

public class UserForm extends JPanel{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JTextField id;
	private JTextField alias;
	private JCheckBox activo;
	private JPasswordField password;
	private JComboBox tipoUsuario;
	private JComboBox almacen;
	//private JTextField almacen;
	
	private JTextField nombre;
	private JTextField apellidos;
	private JTextField email;
	private JTextField telefono;
	
	private Controlador controlador;
	/**
	 * Default constructor
	 */
	public UserForm(Controlador controlador){
		this.controlador=controlador;
		
		buildUserForm();
		
	}
	
	/**
	 * Builds the form
	 */
	private void buildUserForm() {
		
		this.setBorder(new TitledBorder("Usuario"));
		this.setLayout(new GridLayout(10,2));
		this.setMinimumSize(new Dimension(350,360));
		this.setPreferredSize(new Dimension(350,360));
		
		JLabel l = new JLabel("ID", JLabel.TRAILING);
        this.add(l);
        id = new JTextField(10);
        l.setLabelFor(id);
        id.setEditable(false); //No debe poder ser modificado
        this.add(id);
        
		JLabel l2 = new JLabel("Nombre", JLabel.TRAILING);
        this.add(l2);
        nombre = new JTextField(20);
        l2.setLabelFor(nombre);
        this.add(nombre); 
        
		JLabel l3 = new JLabel("Apellidos", JLabel.TRAILING);
        this.add(l3);
        apellidos = new JTextField(40);
        l3.setLabelFor(apellidos);
        this.add(apellidos);        
        
		JLabel l4 = new JLabel("Alias", JLabel.TRAILING);
        this.add(l4);
        alias = new JTextField(20);
        l4.setLabelFor(alias);
        this.add(alias); 
        
        JLabel l5 = new JLabel("Tipo usuario", JLabel.TRAILING);
        this.add(l5);
        tipoUsuario = new JComboBox(TipoUsuario.values());;
        l5.setLabelFor(tipoUsuario);
        this.add(tipoUsuario);
        
        JLabel l6 = new JLabel("Password", JLabel.TRAILING);
        this.add(l6);
        password = new JPasswordField(20);
        l6.setLabelFor(password);
        this.add(password);
        
        JLabel l7 = new JLabel("Activo ?", JLabel.TRAILING);
        this.add(l7);
        activo = new JCheckBox();
        l7.setLabelFor(activo);
        this.add(activo); 
        
        JLabel l8 = new JLabel("Almacen", JLabel.TRAILING); 
        this.add(l8);
        //almacen = new JTextField(20);
        almacen =new JComboBox();
        l8.setLabelFor(almacen);
        this.add(almacen);
		//Cargamos la lista de almacenes activos en el comboBox
		ListaAlmacenes listado = controlador.obtenerListadoAlmacenesActivos();
		for (int i=0;i<listado.size();i++)
			almacen.addItem(listado.get(i));
        
        
        JLabel l9 = new JLabel("Telefono", JLabel.TRAILING);
        this.add(l9);
        telefono = new JTextField(15);
        l9.setLabelFor(telefono);
        this.add(telefono);
        
        JLabel l10 = new JLabel("Email", JLabel.TRAILING);
        this.add(l10);
        email = new JTextField(50);
        l10.setLabelFor(email);
        this.add(email);
        
	}
	
	/**
	 * Fills the form with usuario info
	 * @param cli
	 */
	public void fillUserForm(Usuario user){
		this.activo.setSelected(user.getActivo());
        this.alias.setText(user.getAlias());

        for (int i=0;i<this.almacen.getItemCount();i++){
        	Almacen almacen =(Almacen)this.almacen.getItemAt(i);
        	if (user.getAlmacen()==almacen.getId()) this.almacen.setSelectedIndex(i);
        }
        //this.almacen.setSelectedItem(controlador.obtenerAlmacen(user.getAlmacen()));
        this.apellidos.setText(user.getApellidos());
		this.email.setText(user.getEmail());
		this.nombre.setText(user.getNombre());
		this.id.setText(Integer.toString(user.getId()));
   		this.telefono.setText(user.getTelefono());
   		this.tipoUsuario.setSelectedItem(user.getTipoUsuario());
		
	}
	
	/**
	 * Retrieves a Cliente object with the info from the form
	 * @return
	 */
	public Usuario getClientObject(){
		Usuario ret = new Usuario();
		
		try{
			ret.setId(Integer.parseInt(this.id.getText()));	
		}catch (NumberFormatException e){}
			
		if(this.activo.getSelectedObjects() != null)
			ret.setActivo(true);
		else
			ret.setActivo(false);
        ret.setAlias(this.alias.getText());
        Almacen almacen =(Almacen)this.almacen.getSelectedItem();
        ret.setAlmacen(almacen.getId());
        ret.setApellidos(this.apellidos.getText());
        ret.setEmail(this.email.getText());
		ret.setNombre(this.nombre.getText());
		ret.setPassword(String.valueOf(this.password.getPassword()));
		ret.setTelefono(this.telefono.getText());
		ret.setTipoUsuario((TipoUsuario)this.tipoUsuario.getSelectedItem());
		return ret;
	}

}
